package com.stanwind.dbselector.anno;

import com.stanwind.dbselector.route.DefaultNodeRouter;
import com.stanwind.dbselector.route.NodeRouter;

import java.lang.annotation.*;

/**
 * DBNode 节点选择注解
 *
 * @author : stan
 * @version : 1.0
 * @date :  2022/8/1 9:35 AM
 **/
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DBNode {
    /**
     * 自动类型
     * @return
     */
    NodeType type() default NodeType.MASTER;

    /**
     * 自定义节点名
     * @return
     */
    String node() default "";

    /**
     * 节点路由
     */
    Class<? extends NodeRouter> router() default DefaultNodeRouter.class;

    //TODO 跨线程传递
//    /**
//     * 是否跨线程
//     * true时 方法内如果有异步线程 同样生效
//     * 非transmittable 池化线程无效
//     * 默认false
//     * @return
//     */
//    boolean inheritable() default false;
}
